home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 5 / Gekikoh Dennoh Club Vol. 5 (Japan).7z / Gekikoh Dennoh Club Vol. 5 (Japan) (Track 01).bin / docs / rakup / match03.doc < prev    next >
Encoding:
Text File  |  1998-10-03  |  14.6 KB  |  534 lines

  1. ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬
  2. (MATCH03.DOC)
  3.  é¿ïCèyé▓é¡éτé¡âvâìâOâëâ~âôâOôⁿûσ ö╘èOò╥ üuâGâLâXâpü[âgâVâXâeâÇé╠ì∞ɼüv
  4.                                                                ìLêΣü@É╜ 
  5. ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬ä¬
  6.  
  7. ü¢û╪ì\æó
  8.  
  9.   é▒é▒é┼é═üAâGâLâXâpü[âgâVâXâeâÇé╠ì∞ɼé┼üAâoâbâNâgâëâbâNé╠Ä└î╗é╔òKùvé╞é╚
  10.  
  11. éΘüuû╪ì\æó(tree structer)üvé╔é┬éóé─Éαû╛é╡é▄é╖üBüuû╪(tree)üvé═üAÉ▀üiâmü[
  12.  
  13. âhüjé╞î─é╬éΩéΘùvæfé╔æ╬é╡é─üAèKæwôIé╚è╓îWüiÉeÄqè╓îWüjé≡ò\é╡é╜éαé╠é┼é╖üBÉg
  14.  
  15. ï▀é╚ùßé┼é═üAâfâBâîâNâgâèé╠èKæwì\æóé¬û╪é╔éáé╜éΦé▄é╖üBâfâBâîâNâgâèé╔üuâïü[
  16.  
  17. âgâfâBâîâNâgâèüvé¬éáéΘéµéñé╔üAû╪é╔éαüuì¬üiâïü[âgüjüvé╞î─é╬éΩéΘÉ▀é¬æ╢ì▌é╡
  18.  
  19. é▄é╖üB
  20.  
  21.  
  22.                     (root)
  23.                       é`    äƒäƒäƒäƒäƒäƒäƒäƒ  âîâxâïéO
  24.                     ü^übü_                ü¬
  25.                   ü^  üb  ü_
  26.                 éa    éb    éc            û╪  âîâxâïéP
  27.               ü^übü_        übü_          é╠
  28.             ü^  üb  ü_      üb  ü_        ìé
  29.           éd    ée    éf    ég    éh      é│  âîâxâïéQ
  30.                     ü^  ü_
  31.                   ü^      ü_              ü½
  32.                 éi          éj    äƒäƒäƒäƒäƒ  âîâxâïéR
  33.  
  34.  
  35.                        É} 6 : êΩö╩ôIé╚û╪ì\æóé╠êΩùß
  36.  
  37.  
  38.   û╪é≡É}Īé╖éΘÅΩìçüAèKæwè╓îWé¬é═é┴é½éΦéφé⌐éΘéµéñé╔üAì¬é≡Åπé╔é╡é─üAô»é╢èK
  39.  
  40. æwé╔éáéΘÉ▀é≡ò└é╫é─Åæé½é▄é╖üB
  41.  
  42.   ì¬é⌐éτâîâxâï 0üAâîâxâï 1 é╞èKæwé≡Éöéªé─éóé½üAì┼ë║æwé╠É▀é▄é┼é╠èKæwÉöé≡
  43.  
  44. üuû╪é╠ìéé│üvé╞éóéóé▄é╖üBû╪é═üAéáéΘÉ▀é⌐éτë║é╠òöò¬é≡É╪éΦÅoé╡é╜éαé╠éαüAû╪é╞
  45.  
  46. é╡é─é╠ɽÄ┐é≡Ä¥é┴é─éóé▄é╖üBé▒éΩé≡üuòöò¬û╪üvé╞éóéóé▄é╖üB
  47.  
  48.   û╪é═üAéáéΘÉ▀é⌐éτæ╝é╠É▀é╔ÄèéΘüuîoÿHüvé≡ìléªéΘé▒é╞é¬é┼é½é▄é╖üBé╜é╞éªé╬üA
  49.  
  50. é`é⌐éτéié╔é═üAé`ü|éaü|éfü|éié╞éóéñîoÿHé¬éáéΦé▄é╖é╦üBé▒éΩé═üAâfâBâîâNâgâè
  51.  
  52. éΓâtâ@âCâïé≡ÄwÆΦé╖éΘÄ₧é╠âpâXé╞ô»é╢é┼é╖üB
  53.  
  54.   éáéΘÉ▀é⌐éτì¬é╠ò√îⁿé╔é│é⌐é╠é┌éΘÄ₧üAôrÆåé┼Æ╩é┴é─éóé¡É▀é≡üuɵæcüvé╞éóéóüA
  55.  
  56. Æ╝É┌îqé¬é┴é─éóéΘÉ▀é≡üuÉeüvé╞éóé▄é╖üBé▒éΩé═üAïté⌐éτî⌐éΘé╞üuÄqæ╖üvé╞üuÄqüv
  57.  
  58. é╞éóéñè╓îWé╔é╚éΦé▄é╖üBÄqé≡Ä¥é╜é╚éóÉ▀é≡ô┴é╔üuùtüvé╞î─é╘é▒é╞é¬éáéΦé▄é╖üBÅπ
  59.  
  60. É}é┼éóéñé╞üAéfé═éiüCéjé╠Éeé┼üAéié═éfé╠Äqé╔é╚éΦé▄é╖üBéié═Äqé≡Ä¥é┴é─éóé╚éó
  61.  
  62. é╠é┼ùté╞é╚éΦé▄é╖üB
  63.  
  64.   Äqé═üAüuì╢ < ëEüvé╠Åçö╘é┼É▀é╔èiö[é╖éΘé╠é¬êΩö╩ôIé┼é╖üBé▒éΩé≡üuÅçÅÿû╪üv
  65.  
  66. é╞éóéóé▄é╖üBé▄é╜üAÅçö╘é¬û│éóû╪é≡üuû│ÅçÅÿû╪üvé╞î─é╤é▄é╖üB
  67.  
  68.   É▀é¬Ä¥é┴é─éóéΘÄqé╠Éöé≡üuăÉöüvé╞éóéóé▄é╖üBÅπÉ}é╠ÅΩìçüAé`é═ 3 é┬é╠ÄqéaüA
  69.  
  70. ébüAécé≡Ä¥é┴é─éóéΘé╠é┼üAé`é╠ăÉöé═ 3 é╞é╚éΦé▄é╖üBæSé─é╠É▀é╠ăÉöé≡ n é╔æ╡
  71.  
  72. éªé╜ÅçÅÿû╪é≡üun ò¬û╪üvé╞î─é╤é▄é╖üBô┴é╔üAăÉö鬠2 é╠ô±ò¬û╪é═üAâvâìâOâëâÇ
  73.  
  74. é┼éµé¡ÄgéφéΩéΘâfü[â^ì\æóé┼é╖üB
  75.  
  76.  
  77.                                 (root)
  78.                                   18
  79.                                 ü^  ü_
  80.                               ü^      ü_
  81.                             ü^          ü_
  82.                           ü^              ü_
  83.                         ü^                  ü_
  84.                       14                      22
  85.                     ü^  ü_                  ü^  ü_
  86.                   ü^      ü_              ü^      ü_
  87.                 12          16          20          24
  88.               ü^  ü_      ü^  ü_      ü^  ü_      ü^  ü_
  89.             11      13  15      17  19      21  23      25
  90.  
  91.  
  92.                            É} 7 : ô±ò¬û╪é╠êΩùß
  93.  
  94.  
  95.   ÅπÉ}é╔ô±ò¬û╪é╠ùßé≡Īé╡é▄é╖üBô±ò¬û╪é┼é═üAÉ▀é╔êΩé┬é╠âfü[â^é≡èiö[é╡é▄é╖üB
  96.  
  97. é╗é╡é─üAé╗é╠É▀é╠ì╢æñé╠Äqé╔é═żé│éóâfü[â^é≡üAëEæñé╠Äqé╔é═æσé½éóâfü[â^é¬öz
  98.  
  99. Æué│éΩéΘéµéñé╔û╪é≡ì\ɼé╡é▄é╖üB
  100.  
  101.   ô±ò¬û╪é═âfü[â^é╠ÆTì⌡üEæ}ôⁿé≡ìéæ¼é╔ìséñé▒é╞é¬é┼é½éΘâfü[â^ì\æóé┼é╖üBé╜é╞
  102.  
  103. éªé╬üAÅπÉ}é╠ô±ò¬û╪é⌐éτ 19 é≡ÆTé╡é─é▌é▄é╡éσéñüBé▄é╕üAroot é╠ 18 é╞öΣèré╡
  104.  
  105. é▄é╖üB18 < 19 é┼é╖é⌐éτüAëEæñé╠Äqé≡é╜é╟éΦ 22 é╞öΣèré╡é▄é╖üBìíôxé═ 19 < 22
  106.  
  107. é╚é╠é┼ì╢æñé╠Äqé≡é╜é╟éΦé▄é╖üBăé═ 20 é╞öΣèré╡ 19 < 20  é╚é╠é┼ì╢æñé╠Äqé≡é╜
  108.  
  109. é╟éΦüAé▒é▒é┼ 19 é≡î⌐é┬é»éΘé▒é╞é¬é┼é½é▄é╖üB
  110.  
  111.   ô±ò¬û╪é╠ÆTì⌡é═ô±ò¬ÆTì⌡é╞ô»é╢î┤ù¥é┼é╖üBì╢ëEé╟é┐éτé⌐é╠Äqé≡é╜é╟éΘé╜é╤é╔üA
  112.  
  113. ÆTì⌡é╖éΘâfü[â^Éöé═ö╝ò¬é╔é╚éΦé▄é╖üB ÅπÉ}é╠ÅΩìçé┼éαüAÆTì⌡é╖éΘâfü[â^Éöé¬15,
  114.  
  115. 7, 3, 1 é╞é╚éΦüAì┼îπé╔î⌐é┬é»éΘé▒é╞é¬é┼é½é▄é╡é╜üB
  116.  
  117.   âfü[â^Éöé≡ N é╞é╖éΘé╞üAÉⁿî`ÆTì⌡é┼é═ò╜ï╧é┼ N/2 ë±é╠öΣèré¬òKùvé╔é╚éΦé▄é╖
  118.  
  119. é¬üAô±ò¬û╪é≡Ägéñé╞ log N Æ÷ôxé╠ë±Éöé┼Ä√é▄éΦé▄é╖üBé╜é╞éªé╬üAâfü[â^鬠100
  120.  
  121. î┬éáéΘÅΩìçüAÉⁿî`ÆTì⌡é┼é═ 50 ë±âfü[â^é≡öΣèré╡é╚é»éΩé╬éóé»é╚éóé╠é╔üAô±ò¬û╪
  122.  
  123. é┼é═ 7 ë±Æ÷ôxé╠öΣèré┼ì╧é▐éφé»é┼é╖üB
  124.  
  125.   é╜é╛é╡üAé▒éΩé═ì╢ëEé╠òöò¬û╪é╠âoâëâôâXé¬é╞éΩé─éóéΘù¥æzôIé╚Å≤æ╘é┼é╠ÿbé┼é╖üB
  126.  
  127. âoâëâôâXé¬ò÷éΩéΘé╞ô±ò¬û╪é╠ɽö\é═ù≥ë╗é╡üAì┼ê½é╠ÅΩìçé═Éⁿî`ÆTì⌡é╞ô»é╢é╔é╚é┴
  128.  
  129. é─é╡é▄éóé▄é╖üBé╗é▒é┼üAì╢ëEé╠âoâëâôâXé≡êΩÆΦé╠ö═ê═é╔Ä√é▀éΘüuò╜ìtû╪üvé¬ìlê─
  130.  
  131. é│éΩé─éóé▄é╖é¬üAìíë±é═û╪ì\æóé╠Éαû╛é¬û┌ôIé╚é╠é┼üAùßæΦé╞é╡é─ÆPÅâé╚ô±ò¬û╪é≡
  132.  
  133. ĵéΦÅπé░é▄é╖üB
  134.  
  135.  
  136.   Lisp é╠ÅΩìçüAû╪é═âèâXâgé≡Ägé┴é─ò\é╖é▒é╞é¬é┼é½é▄é╖üBé╜é╞éªé╬üAâèâXâgé╠
  137.  
  138. æµ 1 ùvæfé¬É▀é╠Äφù▐é≡ò\é╡üAÄcéΦé╠ùvæfé╔Äqé≡èiö[é╖éΘé╞üAÉ} 6 é╠û╪é═ăé╠éµ
  139.  
  140. éñé╔ò\é╖é▒é╞é¬é┼é½é▄é╖üB
  141.  
  142.  
  143.             (A (B (E) (F) (G (J) (K))) (C) (D (H)(I)))
  144.  
  145.                     (A
  146.                        (B
  147.                           (E)
  148.                           (F)
  149.                           (G
  150.                              (J)
  151.                              (K)))
  152.                        (C)
  153.                        (D
  154.                           (H)
  155.                           (I)))
  156.  
  157.                         É} 8 : û╪ì\æóé╠âèâXâgò\î╗
  158.  
  159.  
  160. êΩù±é╔ò└é╫éΘé╞üAé╚é╔é¬é╚é±é╛é⌐é│é┴é╧éΦéφé⌐éΦé▄é╣é±é¬üAô»é╢âîâxâïé╠É▀é≡ò└
  161.  
  162. é╫éΘé╞üAé╗é╠ì\æóé¬ù╟é¡éφé⌐éΘé╞Ävéóé▄é╖üB
  163.  
  164.   ô±ò¬û╪éαô»ùlé╔âèâXâgé┼ò\é╖é▒é╞é¬é┼é½é▄é╖üBâèâXâgé╠ɵô¬é¬âfü[â^é┼üAăé¬
  165.  
  166. ì╢æñé╠ÄqüAì┼îπé╔ëEæñé╠Äqé≡èiö[é╡é▄é╖üBÄqé¬é╚éóÅΩìçé═ nil é≡èiö[é╖éΘé▒é╞
  167.  
  168. é╔é╖éΘé╞üAÉ} 7 é╠ô±ò¬û╪é═ăé╠éµéñé╔ò\é╣é▄é╖üB
  169.  
  170.  
  171.  (18 (14 (12 (11 nil nil) (13 nil nil)) (16 (15 nil nil) (17 nil nil)))
  172.      (22 (20 (19 nil nil) (21 nil nil)) (24 (23 nil nil) (25 nil nil))))
  173.  
  174.                 (18
  175.                     (14
  176.                         (12
  177.                             (11 nil nil)
  178.                             (13 nil nil))
  179.                         (16
  180.                             (15 nil nil)
  181.                             (17 nil nil)))
  182.                     (22
  183.                         (20
  184.                             (19 nil nil)
  185.                             (21 nil nil))
  186.                         (24
  187.                             (23 nil nil)
  188.                             (25 nil nil))))
  189.  
  190.                     É} 9 : ô±ò¬û╪é≡âèâXâgé┼ò\é╡é╜ÅΩìç
  191.  
  192.  
  193.   é▒é╠éµéñé╔üAâèâXâgé≡Ägéªé╬ô±ò¬û╪é┼éαæ╜ò¬û╪é┼éαâoâôâoâôì∞éΩéΘé╠é┼é╖é¬üA
  194.  
  195. é▒é╠âèâXâgé≡î⌐é╜é╛é»é┼é═üAô┴é╔ÆPÅâé╔ò└é╫é╜é╛é»é╠âèâXâgé┼é═üAé╗éΩé¬ô±ò¬û╪
  196.  
  197. é≡ò\é╡é─éóéΘé╞ù¥ë≡é╖éΘé╠é═ìóô∩é┼é╡éσéñüBé╗é▒é┼üAâNâëâXé╠Åoö╘é╞é╚éΘéφé»é┼
  198.  
  199. é╖üB
  200.  
  201.   é╜é╞éªé╬üAô±ò¬û╪é╠É▀é═ăé╠éµéñé╔ò\é╖é▒é╞é¬é┼é½é▄é╖üB
  202.  
  203.  
  204.      List 22 : ô±ò¬û╪é╠É▀
  205.  
  206.    1 (defclass Node ()
  207.    2   (object         ; âfü[â^
  208.    3    left           ; ì╢é╠Äq
  209.    4    right))        ; ëEé╠Äq
  210.  
  211.  
  212.   âXâìâbâg object é╔âfü[â^é≡èiö[é╡üAleft é═ì╢æñé╠ÄqüAright é═ëEæñé╠Äqé≡
  213.  
  214. èiö[é╡é▄é╖üBâXâìâbâgé═ Lisp é╠âfü[â^é┼éáéΩé╬ë╜é┼éαèiö[é╖éΘé▒é╞é¬é┼é½éΘé╠
  215.  
  216. é┼üAô»é╢âNâëâXé╠âCâôâXâ^âôâXé┼éαâXâìâbâgé╔âZâbâgé╖éΘé▒é╞é¬é┼é½éΘé╠é┼é╖üB
  217.  
  218. é╡é╜é¬é┴é─üAâXâìâbâg left é⌐éτâfü[â^é≡ĵéΦÅoé╣é╬üAì╢æñé╠É▀é╓ê┌ô«é╖éΘé▒é╞
  219.  
  220. é¬é┼é½üAright é⌐éτâfü[â^é≡ĵéΦÅoé╣é╬üAëEæñé╠É▀é╓ê┌ô«é╖éΘé▒é╞é¬é┼é½é▄é╖üB
  221.  
  222. Äqé¬é╚éóÅΩìçüAleft é╞ right é╔é═ nil é≡âZâbâgé╖éΘé▒é╞é╔é╡é▄é╡éσéñüB
  223.  
  224.   é┼é═Ä└ì█é╔üAô±ò¬û╪é≡æÇì∞é╖éΘâNâëâXé≡ì∞é┴é─é▌é▄é╖üBâNâëâXû╝é═ Tree é╞é╡
  225.  
  226. é▄é╡é╜üB
  227.  
  228.  
  229.      List 23 : ô±ò¬û╪
  230.  
  231.    1 (defclass Tree ()
  232.    2   (root))            ; âïü[âg
  233.  
  234.  
  235. âNâëâX Tree é═üAô±ò¬û╪é╠쬠root é≡èiö[é╖éΘé╛é»é┼é╖üBÄ└ì█é╠ô±ò¬û╪é═âNâëâX
  236.  
  237. Node é≡Ägé┴é─Ä└î╗é╡é▄é╖üBé╞é▒éδé┼üAô±ò¬û╪é≡æÇì∞é╖éΘÅΩìçüAâfü[â^é╠öΣèrè╓
  238.  
  239. Éöé¬òKùvé╔é╚éΦé▄é╖üBé╜é╞éªé╬üAÉöÆlé≡èiö[é╖éΘé╠é┼éáéΩé╬üAÉöÆlé╠öΣèrè╓Éöé≡
  240.  
  241. Ägé┴é─ì∞éΩé╬éóéóé╠é┼é╖é¬üAé╗éΩé┼é═ÉöÆlÉΩùpé╠ô±ò¬û╪é╞é╚é┴é─é╡é▄éóé▄é╖é╦üB
  242.  
  243. âfü[â^é╠î^é╔éµé┴é─Ä⌐ô«ôIé╔öΣèrè╓Éöé¬ò]ë┐é│éΩéΘé╞üAêΩé┬é╠ô±ò¬û╪é≡ì∞éΘé╛é»
  244.  
  245. é┼üAé╟é±é╚âfü[â^é╔é┼éαæ╬ë₧é╖éΘé▒é╞é¬é┼é½é▄é╖üBé▒éΩé═üAâüâ\âbâhé≡Ägéªé╬è╚
  246.  
  247. ÆPé╔Ä└î╗é┼é½é▄é╖üBé╗é▒é┼üAô±ò¬û╪é≡ÄgéñÄ₧é╔é═üAăé╠âüâ\âbâhé≡ÆΦï`é╖éΘé▒é╞
  248.  
  249. é╔é╡é▄é╖üB
  250.  
  251.  
  252.         compare-object obj1 obj2
  253.  
  254.           OUTPUT : obj1 < obj2  --> -1
  255.                    obj1 = obj2  -->  0
  256.                    obj1 > obj2  -->  1
  257.  
  258.  
  259. compare-object é═ obj1 é╞ obj2 é≡öΣèré╡üA-1, 0, 1 é╠éóé╕éΩé⌐é╠Ælé≡ò╘é╡é▄
  260.  
  261. é╖üBé▒éΩé═üAébé╠òWÅÇè╓Éö strcmp() é╚é╟é╞ô»é╢Ädùlé┼é╖é╦üBé╜é╞éªé╬üAÉöÆlé≡
  262.  
  263. èiö[é╖éΘÅΩìçé═üAăé╠éµéñé╚ÆΦï`é╔é╚éΘé┼é╡éσéñüB
  264.  
  265.  
  266.      List 24 : ÉöÆlé≡èiö[é╖éΘÅΩìç
  267.  
  268.    1 (defmethod compare-object ((n1 number) (n2 number))
  269.    2   (cond ((= n1 n2) 0)
  270.    3         ((< n1 n2) -1)
  271.    4         (t 1)))
  272.  
  273.  
  274. Æ╩Åφé╠âfü[â^î^é┼éαüAâüâ\âbâhé═ÆΦï`é┼é½éΘé▒é╞é≡ÄvéóÅoé╡é─é¡é╛é│éóüB
  275.  
  276.  
  277.   é╗éΩé┼é═üAâNâëâX Tree é╠âüâ\âbâhé≡ì∞éΦé▄é╖üBé▄é╕üAô±ò¬û╪é╠Æåé⌐éτâfü[â^
  278.  
  279. é≡ÆTì⌡é╖éΘ search-tree é┼é╖üB
  280.  
  281.  
  282.      List 25 : ÆTì⌡é╖éΘ
  283.  
  284.    1 (defmethod search-tree ((tree Tree) data)
  285.    2   (search-node (slot-value tree 'root) data))
  286.  
  287.  
  288.   search-tree é═ data é≡î⌐é┬é»é╜éτ t é≡ò╘é╡üAî⌐é┬é⌐éτé╚éóÅΩìçé═ nil é≡ò╘
  289.  
  290. é╡é▄é╖üBÄ└ì█é╠ÄdÄûé═ search-node é┼ìséóé▄é╖üB
  291.  
  292.  
  293.      List 26 : ÆTì⌡û{æ╠
  294.  
  295.    1 (defun search-node (node data)
  296.    2   (if node
  297.    3     (with-slots (object left right) node
  298.    4       (case (compare-object data object)
  299.    5         (0  t)
  300.    6         (1  (search-node right data))
  301.    7         (-1 (search-node left  data))))))
  302.  
  303.  
  304.   âüâ\âbâhé╞é╡é─ÆΦï`é╡é╚é⌐é┴é╜é╠é═üAê°Éö node é╔ nil é¬âZâbâgé│éΩéΘÅΩìç
  305.  
  306. é¬éáéΘé⌐éτé┼é╖üB
  307.  
  308.   é▄é╕üAê°Éö node é¬ nil é┼é╚éóé▒é╞é≡èmöFé╡é▄é╖üBé╗é╠ÅΩìçüAnode é╔é═âNâë
  309.  
  310. âX Node é╠âCâôâXâ^âôâXé¬âZâbâgé│éΩé─éóéΘé╠é┼üAé╗é▒é╔èiö[é│éΩé─éóéΘ object
  311.  
  312. é╞ data é≡ compare-object é┼öΣèré╡é▄é╖üBò╘éΦÆl鬠0 é╚éτé╬üAâfü[â^é≡î⌐é┬
  313.  
  314. é»é╜é╠é┼ t é≡ò╘é╡é▄é╖üB1 é┼éáéΩé╬ data é═ object éµéΦéαæσé½éóé╠é┼üAëEæñ
  315.  
  316. é╠Äqé≡é╜é╟éΦé▄é╖üB-1 é┼éáéΩé╬ data é═ object éµéΦéαżé│éóé╠é┼üAì╢æñé╠Äq
  317.  
  318. é≡é╜é╟éΦé▄é╖üBé▒é╠Åêù¥é═ì─ïAé≡Ägéªé╬è╚ÆPé┼é╖üBright éΓ left é╔ nil é¬âZâb
  319.  
  320. âgé│éΩé─éóéΩé╬üAì┼Åëé╠ê°Éöâ`âFâbâNé╔éµé┴é─üAì─ïAî─é╤Åoé╡é¬ÆΓÄ~é╡é─ nil
  321.  
  322. é≡ò╘é╖é▒é╞é╔é╚éΦé▄é╖üB
  323.  
  324.  
  325.   Äƒé═ô±ò¬û╪é╔âfü[â^é≡æ}ôⁿé╖éΘ insert-tree é┼é╖üB
  326.  
  327.  
  328.      List 27 : æ}ôⁿé╖éΘ
  329.  
  330.    1 (defmethod insert-tree ((tree Tree) data)
  331.    2   (setq root (insert-node (slot-value tree 'root) data)))
  332.  
  333.  
  334.   insert-tree é═âNâëâX Tree é╠âüâ\âbâhé┼é╖üBÄ└ì█é╠ÄdÄûé═ insert-node é┼
  335.  
  336. ìséóé▄é╖üBinsert-node é═âfü[â^é≡æ}ôⁿé╡é╜ÉVé╡éóòöò¬û╪é≡ò╘é╖è╓Éöé┼é╖üBé┼é═üA
  337.  
  338. insert-node é≡Éαû╛é╡é▄é╡éσéñüB
  339.  
  340.  
  341.      List 28 : æ}ôⁿû{æ╠
  342.  
  343.    1 (defun insert-node (node data)
  344.    2   (if (null node)
  345.    3       (make-instance 'Node 'object data)
  346.    4       (with-slots (object left right) node
  347.    5         (case (compare-object data object)
  348.    6           (1  (setq right (insert-node right data)))
  349.    7           (-1 (setq left  (insert-node left  data))))
  350.    8         node)))
  351.  
  352.  
  353.   ê°Éö node é¬ nil é╠ÅΩìçé═üAÉVé╡éóÉ▀é≡ì∞éΦé╗éΩé≡ò╘é╡é▄é╖üBé╜é╞éªé╬ root
  354.  
  355. 鬠nil é╠ÅΩìçüAinsert-node é┼ÉVé╡éóÉ▀é¬ò╘é│éΩüAé╗éΩé≡ insert-tree é┼ root
  356.  
  357. é╔âZâbâgé╡é▄é╖üB
  358.  
  359.   É▀ node é¬ù^éªéτéΩé╜ÅΩìçé═üAcompare-object é┼ object é╞ data é≡öΣèré╡
  360.  
  361. é▄é╖üBobject éµéΦ data é¬æσé½éóé╠é┼éáéΩé╬ëEæñé╠Äqé≡é╜é╟éΦüAżé│é»éΩé╬ì╢
  362.  
  363. æñé╠Äqé≡é╜é╟éΦé▄é╖üBé▒é╠Ä₧üAinsert-node é╠ò╘éΦÆlé≡âXâìâbâgé╔âZâbâgé╡é▄é╖üB
  364.  
  365. éαé╡éαüAâXâìâbâg鬠nil é┼éáéΩé╬üAé▒é▒é╔ÉVé╡éóÄqé¬æ}ôⁿé│éΩé▄é╖üBdata é╞
  366.  
  367. object é¬ôÖé╡éóÅΩìçé═üAÉVé╡éóâfü[â^é≡æ}ôⁿé╖éΘòKùvé═é╚éóé╠é┼üAë╜éαìséóé▄
  368.  
  369. é╣é±üBîπé═üAæ}ôⁿé│éΩé╜òöò¬û╪é≡ò╘é╖üAé┬é▄éΦüAê°Éöé╠ node é≡é╗é╠é▄é▄ò╘é╣é╬
  370.  
  371. éóéóé╠é┼é╖üBîïï╟üAÄqé≡èiö[é╡é─éóéΘ left é▄é╜é═ right é╔é═üAô»é╢Äqé¬ì─ôx
  372.  
  373. âZâbâgé│éΩéΘé▒é╞é╔é╚éΦé▄é╖üBû│æ╩é╚éµéñé╔ÄvéφéΩéΘé⌐éαé╡éΩé▄é╣é±é¬üAé╗é╠ò¬
  374.  
  375. é╛é»âvâìâOâëâÇé¬è╚ÆPé╔é╚éΘé╠é┼é╖üB
  376.  
  377.  
  378.   Äƒé═üAâfü[â^é≡ò\Īé╖éΘè╓Éö print-tree é≡ì∞éΦé▄é╖üB
  379.  
  380.  
  381.      List 29 : ô±ò¬û╪é≡ò\Īé╖éΘ
  382.  
  383.    1 (defmethod print-tree ((tree Tree))
  384.    2   (print-node (slot-value tree 'root)))
  385.  
  386.  
  387. Ä└ì█é╠ÄdÄûé═ print-node é┼ìséóé▄é╖üBé╞é▒éδé┼üAû╪é╠æSé─é╠É▀é≡ïKæÑôIé╚ÅçÅÿ
  388.  
  389. é┼ë±éΘé▒é╞é≡üuÅäë±(traverse)üvé╞éóéóé▄é╖üBé▒é╠Æåé┼Ådùvé╚é╠é¬Äƒé╠ò√û@é┼é╖üB
  390.  
  391.  
  392.   1. ìsé½é¬é»Åç
  393.  
  394.      é▄é╕É▀é╠âfü[â^é≡Åoù═é╡üAé╗é╠îπüAì╢é╠ÄqüAëEé╠Äqé╠Åçö╘é┼Åoù═üB
  395.  
  396.   2. ïAéΦé¬é»Åç
  397.  
  398.      ì╢é╠ÄqüAëEé╠Äqé≡Åoù═é╡é─é⌐éτüAÉ▀é╠âfü[â^é≡Åoù═üB
  399.  
  400.   3. Æ╩éΦé¬é»Åç
  401.  
  402.      ì╢é╠Äqé≡Åoù═é╡é─é⌐éτüAÉ▀é╠âfü[â^é≡Åoù═é╡üAì┼îπé╔ëEé╠Äqé≡Åoù═üB
  403.  
  404.  
  405. û╝æOé╠ùRùêé═üAÉ▀é╠âfü[â^é≡Åoù═é╖éΘâ^âCâ~âôâOé⌐éτé½é─éóé▄é╖üBÉ▀é╔ì┼Åëé╔ô₧
  406.  
  407. ÆBé╡é╜Ä₧é╔Åoù═é╖éΘé╠é¬üuìsé½é¬é»üvüAì╢ëEé╠Äqé≡Åoù═é╡é─û▀é┴é─é½é╜Ä₧é╔Åoù═
  408.  
  409. é╖éΘé╠é¬üuïAéΦé¬é»üvüAì╢é╠Äqé≡Åoù═é╡é─û▀é┴é─é½é╜Ä₧é╔üAëEé╠Äqé≡Åoù═é╖éΘæO
  410.  
  411. é╔É▀é╠âfü[â^é≡Åoù═é╖éΘé╠é¬üuÆ╩éΦé¬é»üvé┼é╖üB
  412.  
  413.  
  414.   ô±ò¬û╪é╠ÅΩìçüAÆ╩éΦé¬é»Åçé┼âfü[â^é≡Åoù═é╖éΘé╞üAâ\ü[âgé╡é╜Åoù═îïë╩é≡ô╛éΘ
  415.  
  416. é▒é╞é¬é┼é½é▄é╖üBé╗éΩé┼é═üAprint-node é≡ì∞éΦé▄é╡éσéñüB
  417.  
  418.  
  419.      List 30 : Æ╩éΦé¬é»Åçé┼Åoù═
  420.  
  421.    1 (defun print-node (node)
  422.    2   (if node
  423.    3     (with-slots (object left right) node
  424.    4       (print-node left)
  425.    5       (print-object object)
  426.    6       (print-node right))))
  427.  
  428.  
  429. print-node éαì─ïAé≡Ägéªé╬è╚ÆPé┼é╖üBé▄é╕ê°Éö node é¬ nil é┼é╚éóé▒é╞é≡èmöF
  430.  
  431. é╡é▄é╖üBîπé═üAì╢æñé╠Äqé≡é╜é╟éΦüAïAé┴é─é½é╜éτÉ▀é╠ object é≡Åoù═é╡üAé╗éΩé⌐
  432.  
  433. éτüAëEæñé╠Äqé≡é╜é╟éΦé▄é╖üBé▄é│é╔üAÆ╩éΦé¬é»Åçé╠ÆΦï`é╗é╠éαé╠é┼é╖é╦üB
  434.  
  435.   print-object é═üAobject é≡ò\Īé╖éΘé╜é▀é╠âüâ\âbâhé┼é╖üBé▒é╠âüâ\âbâhéαèi
  436.  
  437. ö[é╖éΘâfü[â^é╔ìçéφé╣é─ÆΦï`é╡é─é¿é½é▄é╖üBé╞éΦéáéªé╕üAăé╠éµéñé╚âüâ\âbâhé≡
  438.  
  439. ÆΦï`é╡é─é¿é»é╬éóéóé┼é╡éσéñüB
  440.  
  441.  
  442.      List 31 : object é╠ò\Ī
  443.  
  444.    1 (defmethod print-object ((data t))
  445.    2   (print data))
  446.  
  447.  
  448.   é╟é±é╚âfü[â^î^é┼éα print é┼ò\Īé╖éΘé▒é╞é¬é┼é½é▄é╖üBé▒éΩé┼òsÅ\ò¬é╠ÅΩìç
  449.  
  450. é═üAé╗é╠âfü[â^î^ÉΩùpé╠ print-object é≡ÆΦï`é╡é─é¡é╛é│éóüB
  451.  
  452.  
  453.   é╞é▒éδé┼üAô±ò¬û╪é⌐éτâfü[â^é≡ìφÅ£é╖éΘé▒é╞éαé┼é½é▄é╖é¬üAÅ¡üXû╩ô|é╚é╠é┼ìí
  454.  
  455. ë±é═Å╚ù¬é╡é▄é╖üBébî╛îΩé┼éµé»éΩé╬üAÉ┘ì∞é╠üuéyé╡ü[âéâôâLü[æµéPéQë± (îÄèºüE
  456.  
  457. ôdö]ïΣèyòö VOL.95)üvé┼Å┌é╡é¡Éαû╛é╡é─éóéΘé╠é┼üAÄQìlé╔é╡é─é¡é╛é│éóüB
  458.  
  459.  
  460.   é╗éΩé┼é═è╚ÆPé╚Ägùpùßé≡Īé╡é▄é╡éσéñüB
  461.  
  462.  
  463.  (defvar *tree1* (make-instance 'Tree))
  464.  (defvar *tree2* (make-instance 'Tree))
  465.  
  466.  (dotimes (x 10)
  467.    (insert-tree *tree1* (rand)))
  468.  
  469.  (dolist (x '("setq" "print" "defun" "cond" "string"
  470.               "number" "dolist" "right" "left" "object"))
  471.    (insert-tree *tree2* x))
  472.  
  473.  
  474.   ô±ò¬û╪  *tree1* é╔é═ÉöÆlé≡èiö[é╡üA*tree2* é╔é═ò╢ÄÜù±é≡èiö[é╡é▄é╖üBôûæR
  475.  
  476. é┼é╖é¬üAò╢ÄÜù±öΣèrùpé╠âüâ\âbâh compare-object é≡ÆΦï`é╡é▄é╖üB
  477.  
  478.  
  479.      List 32 : ò╢ÄÜù±é╠öΣèr
  480.  
  481.    1 (defmethod compare-object ((s1 string) (s2 string))
  482.    2   (cond ((string= s1 s2)  0)
  483.    3         ((string< s1 s2) -1)
  484.    4         (t 1)))
  485.  
  486.  
  487.   ò╢ÄÜù±é≡öΣèré╖éΘè╓Éö string=, string< é≡Ägé┴é─éóé▄é╖üBprint-tree é┼ô±
  488.  
  489. ò¬û╪é≡ò\Īé╖éΘé╞ăé╠éµéñé╔é╚éΦé▄é╖üB
  490.  
  491.  Lisp > (print-tree *tree1*)
  492.  8110
  493.  10299
  494.  10742
  495.  21625
  496.  22672
  497.  28236
  498.  28451
  499.  30646
  500.  30976
  501.  31831
  502.  
  503.  Lisp > (print-tree *tree2*)
  504.  "cond"
  505.  "defun"
  506.  "dolist"
  507.  "left"
  508.  "number"
  509.  "object"
  510.  "print"
  511.  "right"
  512.  "setq"
  513.  "string"
  514.  
  515.  
  516. É│Åφé╔ô«ì∞é╡é─éóé▄é╖é╦üBô±ò¬û╪é≡æÇì∞é╖éΘâNâëâXé═êΩé┬é┼é╖é¬üAâfü[â^é≡öΣèr
  517.  
  518. é╖éΘâüâ\âbâh compare-object é≡ÆΦï`é╖éΘé▒é╞é┼üAéáéτéΣéΘâfü[â^é╔æ╬ë₧é╖éΘé▒
  519.  
  520. é╞é¬é┼é½é▄é╖üBé▒é╠éµéñé╔üAâIâuâWâFâNâgÄwîⁿé≡éñé▄é¡Ägéñé╞üAâvâìâOâëâÇé≡è╚
  521.  
  522. îëé╔ïLÅqé╖éΘé▒é╞é¬é┼é½é▄é╖üB
  523.  
  524.  
  525.   ìíë±ì∞ɼé╖éΘâvâìâOâëâÇé┼é═ô±ò¬û╪é≡Ägéñé▒é╞é═éáéΦé▄é╣é±é¬üAüuû╪ì\æóüvé≡
  526.  
  527. Ägé┴é─âoâbâNâgâëâbâNé≡è╟ù¥é╡é▄é╖üBé▒é╠òöò¬é═Å¡üXô∩é╡éóé╠é┼é╖é¬üAô±ò¬û╪é╠
  528.  
  529. æÇì∞é¬ù¥ë≡é┼é½éΩé╬æσÅΣòvé┼é╖üB
  530.  
  531.  
  532.  
  533. üiédénéeüj
  534.